/*
 * Funambol is a mobile platform developed by Funambol, Inc.
 * Copyright (C) 2008 Funambol, Inc.
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Affero General Public License version 3 as published by
 * the Free Software Foundation with the addition of the following permission
 * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED
 * WORK IN WHICH THE COPYRIGHT IS OWNED BY FUNAMBOL, FUNAMBOL DISCLAIMS THE
 * WARRANTY OF NON INFRINGEMENT  OF THIRD PARTY RIGHTS.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program; if not, see http://www.gnu.org/licenses or write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA.
 *
 * You can contact Funambol, Inc. headquarters at 643 Bair Island Road, Suite
 * 305, Redwood City, CA 94063, USA, or at email address info@funambol.com.
 *
 * The interactive user interfaces in modified source and object code versions
 * of this program must display Appropriate Legal Notices, as required under
 * Section 5 of the GNU Affero General Public License version 3.
 *
 * In accordance with Section 7(b) of the GNU Affero General Public License
 * version 3, these Appropriate Legal Notices must retain the display of the
 * "Powered by Funambol" logo. If the display of the logo is not reasonably
 * feasible for technical reasons, the Appropriate Legal Notices must display
 * the words "Powered by Funambol".
 */


#import <UIKit/UIKit.h>

@interface MainView : UIViewController {

    enum StatusIconId {
        MAIN_VIEW_STATUS_ICON_NULL    = -1,
        MAIN_VIEW_STATUS_ICON_SUCCESS = 0,
        MAIN_VIEW_STATUS_ICON_FAILURE = 1,
        MAIN_VIEW_STATUS_ICON_MAX
    };
    
    NSMutableArray	*menuList;

    UIWindow* window;
    UIBarButtonItem* settingsButton;
    UIButton* syncButton;
	UIButton* contactsButton;
	UIButton* calendarButton;
	UIButton* notesButton;
	UIButton* stopButton;
    UITextView* textView;  
    UILabel* allText;
    UILabel* synchronizeText;
    UILabel* syncCancelText;
    UILabel* contactsText;
    UILabel* contactsStatusText;
    UILabel* calendarText;
    UILabel* calendarStatusText;
    UILabel* tasksText;
    UILabel* tasksStatusText;
    UILabel* notesText;
    UILabel* notesStatusText;
    UILabel* textLabel;
    int syncArrow;
    UIImageView* logo;
    UIImageView* background;
    UIImageView* buttonDarkBlue;
    UIImageView* contactButtonBlue;
    UIImageView* calendarButtonBlue;
    UIImageView* noteButtonBlue;
    UIImageView* iconSyncAllBlue;
    UIImageView* iconContactSyncDark[4];
    UIImageView* iconCalendarSyncDark[4];
    UIImageView* iconNoteSyncDark[4];
    NSTimer *timerContact;
    NSTimer *timerCalendar;
    NSTimer *timerNote;
    NSString* syncContactText;
    NSString* syncCalendarText;
    NSString* syncNoteText;
    
    bool contactSyncAnimation;
    bool calendarSyncAnimation;
    bool noteSyncAnimation;

    bool contactButtonBlueFlag;
    bool calendarButtonBlueFlag;
    bool noteButtonBlueFlag;
    
    NSString* rightTitle;

    UIImageView* statusContactIcons[MAIN_VIEW_STATUS_ICON_MAX];
    UIImageView* statusCalendarIcons[MAIN_VIEW_STATUS_ICON_MAX];
    UIImageView* statusNoteIcons[MAIN_VIEW_STATUS_ICON_MAX];

    UIImageView* iconLogo;
    UIImageView* iconContacts;
    UIImageView* iconCalendar;
    UIImageView* iconTasks;
    UIImageView* iconNotes;
	UINavigationItem* navItem;
    UIFont * large_font;
    UIFont * small_font;
    bool stopDisplayed;

}

// Public
- (id)init;
- (void)dealloc;
- (void) viewDidAppear:(BOOL)animated;
- (void)disableAllButtons;
- (void)enableAllButtons;
- (void)updateItemSyncStatus:(NSString*)msg iconIdx:(StatusIconId) iconIdx sourcename:(NSString*) sourcename;
- (void)updateItemSyncStatus:(NSString*)msg sourcename:(NSString*) sourcename;
- (void)updateItemsSyncStatusDuringSync:(NSString*)sourcename msg:(NSString*)msg;
- (void)startSyncArrowAnimation:(NSString*) sourcename;
- (void)cancelSyncArrowAnimation:(NSString*) sourcename;
- (void)setSyncAllView;
- (void)setSyncSourceView:(NSString*)sourcename;
- (void)resetSyncIcons;
- (void)showStopButton;
- (void) removeButtonBlue: (NSString*) sourcename;
- (void)stopAction:(id)sender;
- (void) reload;

- (void) setStartSyncAnimation:(NSString*) sourcename start:(bool) start;
- (void) setFinalMsg:(NSString*) sourcename result: (int) result;

// Private
- (void)addComponents;
- (void)syncAllAction: (id)sender;
- (void)syncContactsAction: (id)sender;
- (void)syncCalendarAction: (id)sender;
- (void)syncNoteAction: (id)sender;
- (void)syncContactsAnimation:(NSTimer *)timer;
- (void)syncCalendarAnimation:(NSTimer *)timer;
- (void)syncNoteAnimation:(NSTimer *)timer;
- (void)settingsAction:(id)sender;
- (NSString*) getLastSyncMessage: (NSString*) source;
- (void) showMessage: (NSString*) messageText titleText: (NSString*) titleText;
@end


